package ast;

/*
 *  Expresion asociado al commando de asignacion al flujo.
 *  Nodo del arbol semantico.
 */

public class ExpAsigFlujo implements Expresion  {

	/**
	 * ATTRIBUTES
	 */
	// id de la variable a asignar
	private int _IdVar;
	
	/**
	 * Constructor
	 */
	public ExpAsigFlujo( int pIdVar ){
		_IdVar = pIdVar;
	}
	
	/**
	 * Codigo asociado a esta expresion
	 */
	@Override
	public String GenerarCodigo() {
		String code = new String();
		String strVar = String.valueOf(_IdVar);
		code += ConstCode.FLUJO + ConstCode.ASIG_SUMA + ConstCode.VAR + strVar + ConstCode.FIN_LINE;
		code += ConstCode.IF_EXP + ConstCode.FLUJO + ConstCode.MAYOR + ConstCode.MAX + ConstCode.END_IF_EXP;
		code += ConstCode.VAR + strVar +  ConstCode.ASIG + ConstCode.FLUJO + ConstCode.RESTA + ConstCode.MAX + ConstCode.FIN_LINE;
		code += ConstCode.FLUJO + ConstCode.ASIG_RESTA + ConstCode.VAR + strVar + ConstCode.FIN_LINE;
		code += ConstCode.ELSE;
		code += ConstCode.VAR + strVar +  ConstCode.ASIG + ConstCode.CERO + ConstCode.FIN_LINE;
		code += ConstCode.END_CORCHET;
		
		/*
		flujo  += var_Id;
		if(flujo>max)
			var_Id  = flujo - MAX;
		else
			var_Id = 0;
		flujo  -= var_Id;
		*/
		return code;
	}

}
